import pandas as pd
import numpy as np

# pandas数学函数
"""
1.聚合函数：
-- count()：计算非空值的数量
-- max()：计算最大值
-- min()：计算最小值
-- mean()：计算平均值
-- sum()：计算总和
-- std()：计算标准差
-- var()：计算方差
-- cov()：计算协方差
-- median()：计算中位数
-- quantile()：计算分位数
2.其他函数：
-- value_counts()：计算每个值出现的次数
-- df.corr()：计算两列之间的相关系数
-- cumsum()：计算累计和
-- cumprod()：计算累计积
"""
df= pd.DataFrame(data = np.random.randint(0,100,size=(5,3)))
print(df)
print("\n1.聚合函数：")
print('-- count()：计算非空值的数量')
print(df.count()) # 计算非空值的数量,默认计算每列的非空值数量
print(df.count(axis=1)) # 计算每行的非空值数量
print("\n-- max()：计算最大值")
print(df.max()) # 计算每一列的最大值
print(df.max(axis=1)) # 计算每一行的最大值
print("\n-- min()：计算最小值")
print(df.min()) # 计算每一列的最小值
print(df.min(axis=1)) # 计算每一行的最小值
print("\n-- mean()：计算平均值")
print(df.mean()) # 计算每一列的平均值
print(df.mean(axis=1)) # 计算每一行的平均值
print("\n-- sum()：计算总和")
print(df.sum()) # 计算每一列的总和
print(df.sum(axis=1)) # 计算每一行的总和
print("\n-- median()：计算中位数")
print(df.median()) # 计算每一列的中位数
print(df.median(axis=1)) # 计算每一行的中位数

"""
# 方差：
-- 当数据分布比较小时，方差反映的是数据波动的大小，方差越大，数据越分散；
-- 当数据分布比较大时，方差反映的是数据集中趋势的大小，方差越小，数据越集中；
-- 方差的计算公式为：方差=（各个样本值与样本均值的差的平方的平均数）/（样本数-1）；
-- 各个数据与平均值的差的平方和较大，方差就较大；各个数据与平均值的差的平方和较小，方差就较小。
# 标准差：
-- 标准差 = 方差的算术平方根
"""
print("\n方差：")
print(df.var()) # 计算每一列的方差
print(df.var(axis=1)) # 计算每一行的方差
print("\n标准差：")
print(df.std()) # 计算每一列的标准差
print(df.std(axis=1)) # 计算每一行的标准差

print("\n2.其他函数：")
print(df)
print("\n-- value_counts()：计算每个值出现的次数")
print(df[1].value_counts()) # 计算每一列的非空值数量
print('\n-- df.cumsum()：计算累计和')
print(df.cumsum()) # 计算每一列的累计和
print('\n-- df.cumprod()：计算累计积')
print(df.cumprod()) # 计算每一列的累计积

"""
# 协方差：
-- 两组数值中每对变量的偏差乘积的平均值
-- 协方差>0:表示两组变量正相关
   -- 如果两个变量的变化趋势一致，则协方差为正
-- 协方差=0:表示两组变量不相关
   -- 表示两组变量不相关
-- 协方差<0:表示两组变量负相关
   -- 如果两个变量的变化趋势相反，则协方差为负
# 相关系数：
-- 相关系数=协方差/（标准差1*标准差2）
"""
print('\n协方差：')
print(df.cov()) # 整个数据的协方差
print(df[0].cov(df[1])) # 第0列与第1列之间的协方差

'''
# 相关系数：
-- 相关系数=X与Y的协方差/（X的标准差*Y的标准差）
-- 相关系数的取值范围为-1到1，-1表示完全负相关，1表示完全正相关，0表示不相关。
-- r的绝对值越大，相关性越强。
'''
print('\n相关系数：')
print(df.corr()) # 整个数据的相关系数
print(df.corrwith(df[1]))  # 单一特征相关系数










































